Some examples of traditional distributed file systems include at least the following. NFS (Network File System) is a network file system designed for local area networks, and follows a client-server model. NFS relies on periodic polling to keep the cached data fresh. Thus, in a wide area network, NFS forces the clients to refresh data incessantly, thus rendering NFS as very inefficient. The availability of a file is limited by the availability of the server on which the file resides. Scalability is achieved by adding more servers and more volumes; the mapping of servers-volumes-namespace is manual.
AFS (Andrew File System) is a wide-area distributed file system that provides a unified file system under a single, global namespace. The wide-area system is organized in a number of “cells”, with one cell in each physical location. Each cell comprises one or more servers. AFS utilizes persistent caching and callbacks. Write operations are flushed synchronously on the server. The “master copy” of a file resides on a single server. Thus, its availability (for open and write) depends on the availability of the server. Scalability is achieved by adding more servers and more volumes; the mapping of servers-volumes-namespace is semi-manual.
Coda adds to AFS two new modes of operations: “weakly connected” and “disconnected”. In the case of disconnection or server failure, the client (transparently) switches to the disconnected mode and the user continues to read and write locally the cached files (that have been accessed before). However, the user cannot access files that have not been cached locally, and if the same files are updated by other clients, the changes are not visible to this client.
Roam, Ficus, and Bayou are three systems that aim at supporting mobile and/or often-disconnected users. Data are replicated on the local computer of the user. Data are synchronized with the other nodes/servers in the system, explicitly—either periodically or upon a user's request. CFS (Cooperative File System) is mostly a read-only file repository built in a peer-to-peer fashion. Data locations are chosen randomly (for availability and/or reliability) on a per-block basis. Each user owns a separate namespace, and updates to the namespace can be made only by that user. The design of CFS aims at reliability and load-balancing, but not at performance; multiple network hops may occur for each block access.
Oceanstore is a file repository, aimed to provide archival storage. Oceanstore implements a flat hash table on top of a peer-to-peer infrastructure, for placing file replicas; it employs an efficient and fault-tolerant routing algorithm to locate replicas. Locating and accessing a replica of a file may take many network hops.
Name services (such as Domain Name System, Clearinghouse, and Active Directory) use extensive caching to achieve high performance (i.e., low response latency). Data updates (e.g., changing a name zone) happen asynchronously, at the cost of less consistency across the system between cached and authoritative data. In these name services, there is no support of any file-like abstractions.
Thus, the current distributed file systems are limited in speed, availability, and/or network economy, and suffer from various constraints.